﻿using System;
using System.Collections.Generic;
using UnityEngine;

namespace JH
{
    /// <summary>
    ///  该特性用于标记一个需要注入的成员
    /// </summary>
    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field)]
    public class InjectAttribute : Attribute
    {
        /// <summary>
        ///  如果需要给每一个参数指定名称，可以使用这个属性
        /// </summary>
        public List<string> NamedList { get; }
        
        /// <summary>
        ///  该特性用于标记一个需要注入的成员，这个构造一般提供给函数注入使用，逐个传入参数指定的注入名称
        /// </summary>
        public InjectAttribute(params string[] nameList)
        {
            nameList ??= Array.Empty<string>();
            NamedList = new List<string>(nameList);
        }
    }
}